package com.clstu.staticmathod_;

public class Single01 {//单例模式—— l懒汉式，不调用就不创建对象（饿汉式的升级版）
    //但是有线程安全问题
    public static void main(String[] args) {

        Cat n1=Cat.getCat();
        Cat n2=Cat.getCat();
        System.out.println(n1);
        System.out.println(n2);
        System.out.println(n2==n1);//同一个对象
    }
}
class Cat{
    private String name;
    private static int n2=100;
    private static Cat cat;//不对私有对象初始化或者初始化为null

    private Cat(String name){
        this.name=name;
    }

    public static Cat getCat(){//不调用这个方法就不会创建对象，可预防只创建不使用的情况
        if(cat==null){
            cat=new Cat("小猫猫");
        }
        return cat;
    }

    @Override
    public String toString() {
        return "Cat{" +
                "name='" + name + '\'' +
                '}';
    }
}